5804
20933
هذا السؤال له بالفعل إجابات هنا:
اعكس سلسلة في بايثون
(29 إجابة)
مغلق منذ 4 سنوات.
أحاول عكس سلسلة واستخدام الكود أدناه ولكن قيمة القائمة العكسية الناتجة هي بلا.
الرمز:
str_a = 'هذا تحريك'
rev_word = str_a.split ()
rev_word = rev_word.reverse ()
rev_word = ". الانضمام (rev_word)
تقوم بإرجاع TypeError. لماذا ا؟ 
.reverse () تُرجع بلا. لذلك لا يجب أن تسنده إلى متغير.
استخدم هذا بدلاً من ذلك:
stra = 'هذه سلسلة'
revword = stra.split ()
revword.reverse ()
revword = ''. الانضمام (كلمة إعادة)
لقد قمت بتشغيل الكود على IDEOne من أجلك حتى تتمكن من رؤية الإخراج. (لاحظ أيضًا أن الإخراج هو stringaisThis ؛ قد ترغب في استخدام "" .join (revword) ، مع مسافة ، بدلاً من ذلك.)
لاحظ أيضًا أن الطريقة التي قدمتها تعكس الكلمات فقط ، وليس النص. قدم @ ron.rothman رابطًا يوضح بالتفصيل كيفية عكس سلسلة كاملة.
|
هذه هي طريقتي الشخصية المفضلة لعكس الوتر:
Stra = "هذه سلسلة"
revword = stra [:: - 1]
print (revword) # "gnirts a si sihT
أو ، إذا كنت تريد عكس ترتيب الكلمات:
revword = "" .join (stra.split () [:: - 1])
print (revword) # "string a is This"
:)
|
انعكاسات مختلفة على سلسلة:
instring = "هذه سلسلة نصية"
reversestring = instring [:: - 1]
طباعة عكس السلسلة # gnirts a si sihT
wordsreversed = ".join (كلمة [:: - 1] للكلمة في instring.split ())
الكلمات printreversed # sihT si a gnirts
revwordorder = ".join (كلمة لكلمة في instring.split () [:: - 1])
print revwordorder # string a is This
revwordandorder = '' .join (كلمة [:: - 1] للكلمة في instring.split () [:: - 1])
print revwordandorder # gnirts a si sihT
|
للرجوع إليها في المستقبل عندما يكون للكائن طريقة مثل [] .reverse () ، فإنه ينفذ هذا الإجراء بشكل عام على الكائن (على سبيل المثال ، يتم فرز القائمة ولا تُرجع أي شيء ، لا شيء) على عكس الوظائف المضمنة مثل Sorted التي تؤدي إجراءً على كائن وإرجاع قيمة (أي القائمة التي تم فرزها)
|
>>> s = "هذه سلسلة نصية"
>>> الصورة [:: - 1]
"gnirts a siht"
>>> ". الانضمام (معكوس (ق))
"gnirts a siht"
|
تكرر حلقة for السلسلة من النهاية (الحرف الأخير) إلى البداية (الحرف الأول)
>>> s = "يمكنك تجربة هذا أيضًا:]"
>>> مراجعة = "
>>> لـ i في النطاق (len (s) - 1 ، -1 ، -1):
... rev + = s [i]
>>> مراجعة
"]: oot siht yrt nac uoY"
|
بناءً على التعليقات والإجابات الأخرى:
str_a = "هذه سلسلة"
rev_word = ".join (معكوس (str_a.split ()))
تسلسل الطريقة يعمل في Python بعد كل شيء ...
|
يمكن عكس القائمة باستخدام أكثر من طريقة. كما هو مذكور في الإجابات السابقة ، فإن اثنين من الإجابات بارزة للغاية ، واحدة مع وظيفة عكس () واثنين مع ميزة التقطيع. أعطي بعض الأفكار حول أيهما يجب أن نفضله.
يجب علينا دائمًا استخدام الدالة reverse () لعكس قائمة Python. سببان ، أحدهما انعكاس موضعي واثنان أسرع من الآخر.
لدي بعض الأرقام لدعم إجابتي ،
في [15]: len (l)
إخراج [15]: 1000
في [16]:٪ timeit -n1 l.reverse ()
1 حلقات ، أفضل 3: 7.87 s لكل حلقة
في [17]:٪ timeit -n1 l [:: - 1]
1 حلقات ، أفضل 3: 10 s لكل حلقة
بالنسبة لقائمة 1000 عدد صحيح ، كان أداء وظيفة عكس () أفضل مقارنةً بالتقطيع.
|
ليس الجواب الذي تبحث عنه؟ تصفح الأسئلة الأخرى الموسومة ببيثون أو اطرح سؤالك الخاص.